package opf5.persistencia.proxies;

import opf5.entities.dominio.Jugador;
import opf5.entities.dominio.Propuesta;
import opf5.entities.propuestas.PropuestaConcreta;
import opf5.entities.repositorios.RepositorioJugadores;
import opf5.entities.repositorios.RepositorioJugadoresPersistente;
import opf5.entities.repositorios.RepositorioPropuestasPersistente;
import opf5.persistencia.OPF5DBGateway;
import opf5.utilidades.Fecha;

public class PropuestaDBProxy implements Propuesta {
	private PropuestaConcreta propuestaConcreta;
	private int idPropuesta;
	private String estadoPropuesta;
	
	public PropuestaDBProxy() {
		this.propuestaConcreta = new PropuestaConcreta("", null);
	}
	
	public PropuestaDBProxy(PropuestaConcreta propuestaConcreta2) {
		this.propuestaConcreta = propuestaConcreta2;
	}
	
	@Override
	public void rechazar(String motivo) {
		this.propuestaConcreta.rechazar(motivo);
		OPF5DBGateway.rechazarPropuesta(this);
	}
	
	@Override
	public void aprobar(Jugador nuevoJugador,
			RepositorioJugadores repositorioJugadores) {
		this.propuestaConcreta.aprobar(nuevoJugador, repositorioJugadores);
		OPF5DBGateway.aprobarPropuesta(this);
	}
	
	@Override
	public String getComentario() {
		return this.propuestaConcreta.getComentario();
	}
	
	@Override
	public Fecha getFechaPropuesta() {
		return this.propuestaConcreta.getFechaPropuesta();
	}
	
	@Override
	public Jugador getJugadorProponedor() {
		return this.propuestaConcreta.getJugadorProponedor();
	}
	
	@Override
	public String getNombreJugadorPropuesto() {
		return this.propuestaConcreta.getNombreJugadorPropuesto();
	}	

	public void setNombreJugadorPropuesto(String nombre) {
		this.propuestaConcreta.setNombreJugadorPropuesto(nombre);
	}
	
	public String getNombreJugadorProponedor() {
		return this.propuestaConcreta.getJugadorProponedor().getNombre();
	}
	
	public void setNombreJugadorProponedor(String nombre) {
		this.propuestaConcreta.setJugadorProponedor(
				new RepositorioJugadoresPersistente().getJugadorPorId(nombre));
	}
	
	public void setComentario(String comentario) {
		this.propuestaConcreta.setComentario(comentario);
	}
	
	public void setFecha(String fecha) {
		this.propuestaConcreta.setFecha(new Fecha(fecha, "yyyy-MM-dd HH:mm"));
	}
	
	public void setEstadoPropuesta(String estado) {
		this.estadoPropuesta = estado;
	}
	
	public String getEstadoPropuesta() {
		return this.estadoPropuesta;
	}
	
	public String getFecha() {
		return this.propuestaConcreta.getFechaPropuesta().toString();
	}
	
	public int getIdPropuesta() {
		return this.idPropuesta;
	}
	
	public void setIdPropuesta(int id) {
		this.idPropuesta = id;
	}
}
